package simple;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * 给定两个数组 nums1 和 nums2 ，返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
 * @author 胡宇轩
 * @Email: yuxuan.hu01@bianlifeng.com
 */
public class IntersectionOfTwoArrays {
    /**
     * 能够想到最直接的方法就是 通过Set
     * */
    class Solution {
        public int[] intersection(int[] nums1, int[] nums2) {
            List<Integer> list = new ArrayList<>();
            Set<Integer> sets = new HashSet<>();
            for (int j : nums1) {
                sets.add(j);
            }
            for (int j : nums2) {
                if (sets.contains(j)) {
                    list.add(j);
                    sets.remove(j);
                }
            }
            return list.stream().mapToInt(Integer :: valueOf).toArray();
        }
    }
}
